<template>
  <!-- 历史记录 -->
  <!-- 注意：props 中引用类型的数据只能修改，不能重新赋值(否则会造成父组件关联数据无法同步) -->
  <div class="search-history">
    <van-cell title="搜索历史">
      <!-- 如果isDeleteShow 为true显示此模板 -->
      <div v-if="isDeleteShow">
        <span @click="$emit('clear-search-histories')">全部删除</span>
        &nbsp;&nbsp;
        <!-- 点击完成退出删除状态 -->
        <span @click="isDeleteShow = false">完成</span>
      </div>
      <!-- 如果isDeleteShow为false，则显示删除按钮。点击删除按钮将isDeleteShow变为true，进入删除状态 -->
      <van-icon v-else name="delete" @click="isDeleteShow = true"></van-icon>
    </van-cell>
    <van-cell
      v-for="(item, index) in searchHistories"
      :key="index"
      :title="item"
      @click="onSearchItemClick(item, index)"
    >
      <van-icon name="close" v-show="isDeleteShow"></van-icon>
    </van-cell>
  </div>
</template>

<script>
export default {
  // 组件名称
  name: "SearchHistory",
  // 组件参数 接收来自父组件的数据(方法)
  props: {
    searchHistories: {
      type: Array,
      require: true,
    },
  },
  // 局部注册的组件
  components: {},
  // 组件状态值
  data() {
    return {
      // 定义当前是否是删除状态
      isDeleteShow: false, // 控制删除显示状态
    };
  },
  // 计算属性
  computed: {},
  // 侦听器
  watch: {},
  // 组件方法
  methods: {
    onSearchItemClick(item, index) {
      if (this.isDeleteShow) {
        //   删除状态，删除历史记录中的数据
        this.searchHistories.splice(index, 1);
      } else {
        //   非删除，执行搜索操作
        // 在父组件中监听search触发搜索
        this.$emit("search", item);
      }
    },
  },
  // 以下是生命周期钩子   注：没用到的钩子请自行删除
  /**
   * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
   */
  created() {},
  /**
   * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
   * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
   */
  mounted() {},
};
</script> 

<style scoped lang="less">
</style>